package main
import(
	"fmt"
	"net"
	"time"
	"ChatRoom/server/model"
)


//处理和客户端的通信
func process(conn net.Conn){
	//延时关闭conn
	defer conn.Close()
	//调用总控
	processor := &Processor{
		Conn:conn,
	}
	err := processor.process2()
	if err!=nil{
		fmt.Println("客户端和服务器通信协程错误,err=",err)
		return
	}
}


//main方法的功能是监听和等待客户端的链接，以及完成一些初始化工作
func main(){
	//初始化错误类型
	model.InitMyError()
	//先初始化全局redis链接池，再初始化全局MyUserDao,因为后者引用了前者
	//服务器启动时，初始化连接redis的线程池
	model.InitPool("localhost:6379",16,0,300*time.Second)
	//服务器启动时，初始化全局唯一userDao
	model.InitUserDao()
	//提示信息
	fmt.Println("服务器在8889端口监听...")
	listen,err := net.Listen("tcp","0.0.0.0:8889")
	defer listen.Close()
	if err!=nil{
		fmt.Println("net.Listen出错，err=",err)
		return
	}
	//一旦监听成功，就等待客户端来连接服务器
	for{
		fmt.Println("等待客户端来连接服务器...")
		conn,err := listen.Accept()
		if err !=nil{
			fmt.Println("listen.Accept出错，err=",err)
		}
		//一旦链接成功，则启动一个协程和客户端保持通讯
		go process(conn)
	}
}